NOVELL TECHNICAL INFORMATION DOCUMENT TITLE: OBJs for System Call Encrypted Logins DOCUMENT ID: TID000029 DOCUMENT REVISION: A DATE: 01JUL93 ALERT STATUS: Yellow INFORMATION TYPE: Symptom Solution README FOR: ALOGIN.EXE NOVELL PRODUCT and VERSION: NetWare System Calls 1.0 ABSTRACT: This file includes functions that allow you to perform a keyed login to a NetWare 386 file server, as well as change or verify a bindery object's password. _________________________________________________________________ DISCLAIMER THE ORIGIN OF THIS INFORMATION MAY BE INTERNAL OR EXTERNAL TO NOVELL. NOVELL MAKES EVERY EFFORT WITHIN ITS MEANS TO VERIFY THIS INFORMATION. HOWEVER, THE INFORMATION PROVIDED IN THIS DOCUMENT IS FOR YOUR INFORMATION ONLY. NOVELL MAKES NO EXPLICIT OR IMPLIED CLAIMS TO THE VALIDITY OF THIS INFORMATION. _________________________________________________________________ Self-Extracting File Name: ALOGIN.EXE Files Included Size Date Time ALOGIN.TXT (This File) SLOGIN.OBJ 3160 2-03-92 1:13a README.DOC 1923 3-25-92 3:02p MLOGIN.OBJ 3161 2-03-92 1:13a CLOGIN.OBJ 3630 2-03-92 1:13a LLOGIN.OBJ 3631 2-03-92 1:13a SLOGINV.OBJ 3186 2-03-92 1:13a MLOGINV.OBJ 3164 2-03-92 1:13a CLOGINV.OBJ 3677 2-03-92 1:13a LLOGINV.OBJ 3651 2-03-92 1:13a LOGIN.TXT 4544 6-21-93 2:40p Keyed Login Object Modules Last Update: 02/03/92 This document describes the functions contained in the mLOGINx.OBJ files. These functions allow you to perform a keyed login to a NetWare 3.x file server as well as change or verify a bindery object's password. These OBJs can be linked with languages using the Microsoft segment naming conventions. Object Naming Convention: mLOGIN.OBJ m is one of S,M,C or L for Small, Medium, Compact and Large The VAP objects have a 'v' appended to the root name. i.e. sLOGINv.OBJ - Small Model VAP object IMPORTANT NOTES: These functions all assume that you are attached, and the preferred connection is set to the server that you want to login to or change the password on. You must perform these APIs before calling the functions in this object, or they will not work. All Functions require approximately 220 bytes of stack space for local variables. This does not include the overhead for calling DOS or the shell via Int 21h. You must provide sufficient stack space for this. VAP users need to allow for overhead of the NetWareShellServices API. Objects are provided for the SMALL, MEDIUM, COMPACT and LARGE memory models. There are three functions included in each object module: _AsmLoginToFileServer (ObjName, ObjType, ObjPassword) _AsmVerifyBinderyObjectPassword (ObjName, ObjType, ObjPassword) _AsmChangeBinderyObjectPassword (ObjName, ObjType, ObjOldPass, ObjNewPass) Where: ObjName - A pointer to the Object's Name ObjType - The Object's Type i.e. 1 for USER, ... ObjPassword - A pointer to the Object's Password. ObjOldPass - A pointer to the Object's old Password. ObjNewPass - A pointer to the Object's new Password. NOTE: All pointers are model dependant. i.e. 2 byte for small and medium model or 4 byte for compact and large. Also, a global variable called __AsmDataElement has been declared. __AsmDataElement is used to establish DS addressability BEFORE calling any of the other APIs. This is ONLY needed if DS is NOT pointing to DGROUP. If you will be calling the APIs without DS pointing to DGROUP, you need to establish addressability first. To do this, just "MOV AX,SEG __AsmDataElement", and "MOV DS,AX" before calling the API. Be sure to save DS for your program! All functions return a status code in the AX register. See your System Calls Documentation for a description of the return codes. Only registers SI, DI, BP, DS and ES are preserved. All others are destroyed. To call any of these functions, simply push the parameters onto the stack in the reverse order i.e. right to left. Be sure to pass the correct pointer size! Following are samples for calling a small and large model function. ;Small Model Example mov ax,offset DGROUP:Password ; user password push ax mov ax,1 ; type user push ax mov ax,offset DGROUP:Username ; user name push ax call near ptr _AsmLoginToFileServer ;Large Model Example push ds mov ax,offset DGROUP:Password ; user password push ax mov ax,1 ; type user push ax push ds mov ax,offset DGROUP:Username ; user name push ax call far ptr _AsmLoginToFileServer *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Special Info for VAP users =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= This section applies only to users of the VAP routines. You must provide a routine in your prelude module called: '_CallNetWareShellServices' which will perform a call to the NetWareShellServices entry point as specified in the VAPs Header. Following is a sample of what it must look like: _CallNetWareShellServices proc ; for login.obj public _CallNetWareShellServices push ds ; save ds xchg si,bx ; on entry si:bx pointer to mov ds,bx ; request, make ds:si instead call dword ptr cs:[NetWareShellServices]; call OS pop ds ; restore ds cbw ; return code in AX ret _CallNetWareShellServices endp ; for login.obj ÿ